/**
 * 项目名：	Rumba Plan
 * 
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 文件名：	IReportProvider.java
 * 模块说明：	
 * 修改历史：
 * Jun 8, 2007 - zhangyanbo - 创建。
 */
package com.hd123.rumba.report;

import java.io.File;
import java.io.OutputStream;

import com.hd123.rumba.request.Dictionary;

/**
 * 报表提供器
 * <p>
 * 
 * 提供报表的格式和数据。
 * 
 * @author zhangyanbo
 * 
 */
public interface IReportProvider {

  /**
   * 取得报表Id。<br>
   * 每个报表都有一个唯一的Id，根据此Id来查找相应的报表。
   * 
   * @return 报表的Id。
   * @throws Exception
   */
  public String getId() throws Exception;

  /**
   * 取得报表格式。<br>
   * 可以根据数据字典获得用户请求，来定义不同的报表格式。
   * 
   * @param dd
   *          数据字典
   * @return 报表文件。
   * @throws Exception
   */
  public File getReport(Dictionary dd) throws Exception;

  /**
   * 取得报表的数据。<br>
   * 从数据字典中获得用户请求，来取得报表数据并写入输出流中。<br>
   * 报表数据必须是数据包(DataPacket)格式，可利用DataPacketBuilder生成相应的数据包。
   * 
   * @param dd
   *          数据字典
   * @param os
   *          报表数据输出
   * @throws Exception
   */
  public void getData(Dictionary dd, OutputStream os) throws Exception;
}
